package com.thunder.ktv.scoreengine2sdk;

/**
 * 评分维度枚举
 * 定义了六维评分引擎支持的各种评分维度
 */
public enum ScoreDimension {
    /**
     * 音高评分
     */
    PITCH(0x00000001, "音高"),
    
    /**
     * 亮度评分
     */
    BRIGHTNESS(0x00000002, "亮度"),
    
    /**
     * 节奏评分
     */
    RHYTHM(0x00000004, "节奏"),
    
    /**
     * 情感评分
     */
    EMOTION(0x00000008, "情感"),
    
    /**
     * 气息评分
     */
    BREATH(0x00000010, "气息"),
    
    /**
     * 音色评分
     */
    TIMBRE(0x00000020, "音色"),
    
    /**
     * 所有基础评分维度
     */
    ALL(0x0000003F, "所有维度");
    
    private final int value;
    private final String chineseName;
    
    ScoreDimension(int value, String chineseName) {
        this.value = value;
        this.chineseName = chineseName;
    }
    
    /**
     * 获取维度的整数值
     * 
     * @return 维度对应的整数值
     */
    public int getValue() {
        return value;
    }
    
    /**
     * 获取维度的中文名称
     * 
     * @return 维度的中文名称
     */
    public String getChineseName() {
        return chineseName;
    }
    
    /**
     * 检查当前维度是否包含在指定的维度标志中
     * 
     * @param flags 维度标志
     * @return 如果包含则返回true，否则返回false
     */
    public boolean isEnabled(int flags) {
        return (flags & value) != 0;
    }
    
    /**
     * 将多个维度组合成一个标志
     * 
     * @param dimensions 要组合的维度数组
     * @return 组合后的维度标志
     */
    public static int combine(ScoreDimension... dimensions) {
        int result = 0;
        for (ScoreDimension dimension : dimensions) {
            result |= dimension.getValue();
        }
        return result;
    }
    
    @Override
    public String toString() {
        return chineseName;
    }
} 